#ifndef DIO_REQUEST_QUEUE_H_
#define DIO_REQUEST_QUEUE_H_

#include <fermat/dio/request.h>
#include <fermat/common/noncopyable.h>

namespace fermat {

class RequestQueue: public noncopyable {
public:
    enum PriorityOp { POP_READ, POP_WRITE, POP_NONE };
	enum QueueState { NOT_RUNNING, RUNNING, TERMINATING, TERMINATED };
    RequestQueue() {}
public:
	virtual bool start() = 0;
	virtual bool stop() = 0;
    virtual void AddRequest(RequestPtr& req) = 0;
    virtual bool CancelRequest(RequestPtr& req) = 0;
    virtual ~RequestQueue() { }
    virtual void SetPriorityOp(PriorityOp p) { (void)p; }
};


} 

#endif 
